package db

/*

	用户及权限管理

*/
type User struct {
	Id           int    `json:"id"`
	UserName     string `json:"userName"`
	WxUserId     string `json:"wxUserId"`
	PassWord     string `json:"passWord"`
	Name         string `json:"name"`
	ThumbAvatar  string `json:"thumbAvatar"`
	Status       int    `json:"status"`
	RoleId       int    `json:"roleId"`
	RoleName     string `json:"roleName"`
	PlatformAuth string `json:"platformAuth"`
	UpdateTime   string `json:"updateTime"`
	Time         string `json:"time"`
}

//菜单
type Menus struct {
	Id         int    `json:"id"`
	Name       string `json:"name"`
	UrlJson    string `json:"urlJson"`
	Pid        int    `json:"pid"`
	UserName   string `json:"userName"`
	CreateTime string `json:"createTime"`
	UpdateTime string `json:"updateTime"`
}

//角色权限
type Role struct {
	Id           int    `json:"id"`
	Name         string `json:"name"`
	MenuAuth     string `json:"menuAuth"`     //菜单权限
	GameAuth     string `json:"gameAuth"`     //游戏权限
	PlatformAuth string `json:"platformAuth"` // 平台权限
	Time         string `json:"time"`
}

/*
	日志操作
*/
type ServerLog struct {
	Id         int    `json:"id"`   //编号
	Date       string `json:"date"` // 日期
	UserName   string `json:"userName"`
	UserId     int    `json:"userId"`
	ActionType string `json:"actionType"` //操作类型
	Module     string `json:"module"`     //  操作的模块
	OldContent string `json:"oldContent"` //旧数据
	NewContent string `json:"newContent"` //新数据
	Platform   string `json:"platform"`   // 平台
	CreateTime string `json:"createTime"` // 创建时间
}

type AuthTree struct {
	Id      int    `json:"id"`
	Name    string `json:"name"`
	Pid     int    `json:"pid"`
	Checked bool   `json:"checked"`
	Open    bool   `json:"open"`
}

// 游戏
type Game struct {
	Id             int    `json:"gameId"`         // ID
	GameCode       string `json:"gameCode"`       // gameCode
	GameName       string `json:"gameName"`       // 游戏名称
	IconId         int    `json:"iconId"`         // 游戏icon
	IconUrl        string `json:"iconUrl"`        // 游戏iconUrl
	CreateUserId   int    `json:"createUserId"`   // 创建人id
	CreateUserName string `json:"createUserName"` // 创建人名称
	UpdateUserId   int    `json:"updateUserId"`   // 最近更新人id
	UpdateUserName string `json:"updateUserName"` // 最近更新人名称
	//Platform       string `json:"platform"`       // 平台  游戏部分平台
	CreateTime string `json:"createTime"` // 创建时间
	BUsePrefix string `json:"bUsePrefix"` // 已经使用了的cdk前缀
}

// 文件
type File struct {
	Id         int    `json:"id"`         // 文件ID
	Name       string `json:"name"`       // 文件名
	Md5        string `json:"md5"`        // 文件md5
	Path       string `json:"path"`       // 文件路径
	CreateTime string `json:"createTime"` // 创建时间
}

// cdk类
type CdkType struct {
	Id        int                 `json:"id"`        // cdk类 id
	Name      string              `json:"name"`      // cdk分类名称
	GameId    int                 `json:"gameId"`    // cdk类对应的游戏id
	ChannelId *CdkTypeChannelInfo `json:"channelId"` // cdk类对应的渠道id

	TotalCount  int `json:"totalCount"`  // 最多可以使用的cdk总条数
	CanUseCount int `json:"canUseCount"` // 剩余可使用cdk总条数

	UserLimitCount int `json:"userLimitCount"` // 该类cdk 单个用户限制使用条数
	BUseTimes      int `json:"bUseTimes"`      // 该类一条cdk可以用几次

	Desc        string    `json:"desc"`        // 描述
	RewardList  []*Reward `json:"rewardList"`  // 奖励列表
	StartDate   string    `json:"startDate"`   // 有效期开始时间
	EndDate     string    `json:"endDate"`     // 有效期结束时间
	GameVersion int       `json:"gameVersion"` // cdk可用的最低游戏版本

	CreateUserId   int    `json:"createUser"`     // 创建人id
	CreateUserName string `json:"createUserName"` // 创建人名称
	CreateTime     string `json:"createTime"`     // 创建时间
}

type CdkTypeChannelInfo struct {
	IsAll   bool     `json:"isAll"`   // 是否是全渠道通用 默认不匹配 全渠道通用  如果需要匹配 则检查对应的渠道id
	H5      []string `json:"h5"`      // 15 16
	Android []string `json:"android"` // 15 18
	IOS     []string `json:"ios"`
}

// 奖励物品
type Reward struct {
	GoodsId int `json:"goodsid"` // 物品id
	Count   int `json:"count"`   // 物品个数
}

// 渠道
type Channel struct {
	Id           int    `json:"id"`           // id
	CopChannelId int    `json:"copChannelId"` // copChannelId
	ChannelName  string `json:"channelName"`  // 渠道名称
	Platform     string `json:"platform"`     // 平台
}

// cdk
type Cdk struct {
	CdkTypeId   int    `json:"cdkTypeId"`   // cdktype id
	CdKey       string `json:"cdkey"`       // cdk
	CanUseTimes int    `json:"canUseTimes"` // 剩余可用次数
	Status      int    `json:"status"`      // 0 可使用 1 已使用 2 已生成但不可使用
	B_all       int    `json:"bAll"`        // 生成总数
}

type WorkerTask struct {
	UserId      string
	AppId       string
	ChannelId   string
	Cdkey       string
	GameVersion int
	Platform    string       //Android IOS H5
	ResChannel  chan *CdkRes //通道结果
	Status      int          // 0 队列等待中 1 任务处理中  -1 超时
	IsTimeout   bool         // false 没有
}

type CdkRes struct {
	Data interface{} `json:"data"`
	Code string      `json:"code"`
}

// redis 中 cdk清单
type CdkInfo struct {
	CdkTypeId   int `json:"cdkTypeId"`   // cdkTypeId
	Status      int `json:"status"`      // 0 可使用 1 已使用 2 已生成但不可使用
	CanUseTimes int `json:"canUseTimes"` // 剩余可用次数
	B_all       int `json:"bAll"`        // 生成总数
}

// 兑换日志
type ExchangeLog struct {
	BUserId   string `json:"bUserId"`   // 兑换用户id
	BUseTime  string `json:"bUseTime"`  // 兑换时间
	Cdkey     string `json:"cdkey"`     // 兑换的cdk
	CdkTypeId int    `json:"cdkTypeId"` // cdk 所属的cdkTypeId

}
